home *** CD-ROM | disk | FTP | other *** search
/ Archive Magazine CD 1995 / Archive Magazine CD 1995.iso / discs / prog_disc / volume_8 / issue_06 / hdspeed / !HDspeed / hdspeed (.txt) < prev    next >
Encoding:
RISC OS BBC BASIC V Source  |  1995-03-27  |  14.8 KB  |  574 lines

  1.  --> HD Speed Test
  2.  This program and all documentation 
  3.  David Holden 1995
  4. ;A_$="HDspeed":B_$="1.10  Jan 1995":C_$="
  5.  David Holden"
  6. 262343,F_%,G_%
  7. 262341,,G_%
  8. 262342,,G_%
  9. J_(K_%,L_%)
  10. 262364,G_%!24:
  11. G_%!24=13
  12. 17,18:
  13. G_%!16
  14. Q_%>0
  15. F_%=%110000110001
  16. 262351,,R_%:S_%=!R_%:T_%=R_%!8:U_%=R_%!4:V_%=R_%!12:W_%=R_%!16:
  17. Q_%>116 !G_%=Z_%:
  18. 262347,,G_%:
  19. 262341,,G_%:
  20. a_(Z_%,4)
  21. c_(d_%,48,
  22. e_(!G_%))
  23. c_(d_%,46,
  24. g_(!G_%))
  25. T_%=1
  26. 262356,,X_%,S_%,h_%
  27. 262351,,R_%:S_%=!R_%:T_%=R_%!8:U_%=R_%!4:V_%=R_%!12:W_%=R_%!16:
  28. W_%=i_%
  29. 2:S_%-=100:h_%=240:X_%=Y_%:
  30. 262356,,X_%,S_%,h_%
  31. 4:!G_%=d_%:
  32. 262347,,G_%:
  33. 262341,,G_%
  34. Q_%<116
  35. Q_%>0 j_$=
  36. k_(d_%,9)
  37. Q_%<>0 Q_%=
  38. Q_%<0
  39. c_(d_%,9,"Paused")
  40. Q_%>0
  41. c_(d_%,9,j_$):F_%=0
  42. Q_%>0
  43. l_(3,"Are you sure?")=1 Q_%=-1
  44. Q_%<0 Q_%=0:
  45. c_(d_%,9,"Waiting")
  46. m_(0):
  47. 131080,6,n_$
  48. 46:S_%-=8:h_%=U_%+48:X_%=f_%:
  49. 262356,,X_%,S_%,h_%
  50. 48:S_%-=8:h_%=U_%+48:X_%=b_%:
  51. 262356,,X_%,S_%,h_%
  52. 10:K_%=d_%:L_%=10:
  53. o_(d_%,10)
  54. 1:K_%=Z_%:L_%=1:
  55. o_(Z_%,1)
  56. 8:!G_%=Z_%:
  57. 262342,,G_%
  58. G_%!4=6
  59. G_%!4=48
  60. a_(d_%,31)
  61. c_(d_%,9,"Working"):
  62. 63:u_%?I%=0:
  63. v_(d_%,11)
  64. w_(&C800,
  65. x_(d_%,31),51)
  66. y_(51)
  67. v_(d_%,12)
  68. z_(&C800,
  69. x_(d_%,32),52)
  70. y_(52)
  71. v_(d_%,13)
  72. w_(&80000,
  73. x_(d_%,33),53)
  74. y_(53)
  75. v_(d_%,14)
  76. z_(&80000,
  77. x_(d_%,34),54)
  78. y_(54)
  79. v_(d_%,15)
  80. __(&C800,1000,55)
  81. y_(55)
  82. v_(d_%,16)
  83. `_(&C800,1000,56)
  84. y_(56)
  85. v_(d_%,17)
  86. __(A`%,1000,57)
  87. y_(57)
  88. v_(d_%,18)
  89. `_(A`%,1000,58)
  90. y_(58)
  91. v_(d_%,19)
  92. B`(&C800,
  93. x_(d_%,39),59)
  94. y_(59)
  95. v_(d_%,20)
  96. C`(&C800,
  97. x_(d_%,40),60)
  98. y_(60)
  99. v_(d_%,21)
  100. B`(D`%,
  101. x_(d_%,41),61)
  102. y_(61)
  103. v_(d_%,22)
  104. C`(D`%,
  105. x_(d_%,42),62)
  106. y_(62)
  107. v_(d_%,23)
  108. E`(&C800,
  109. x_(d_%,43),63)
  110. y_(63)
  111. v_(d_%,24)
  112. E`(&80000,
  113. x_(d_%,44),64)
  114. y_(64)
  115. v_(d_%,25)
  116. E`(D`%,
  117. x_(d_%,45),65)
  118. y_(65)
  119. c_(d_%,9,"Finished"):!G_%=Z_%:
  120. 262347,,G_%:
  121. 262341,,G_%:
  122. a_(Z_%,4)
  123. 131080,6,n_$:F_%=%110000110001
  124. :Q_%+=1:
  125. y_(i%):
  126. c_(d_%,i%,"Omit"):u_%!((i%-51)*4)=0:
  127. F`(i%):
  128. c_(d_%,i%,"****"):u_%!((i%-51)*4)=-1:
  129. G`(i%,t%,d%):
  130. p%:p%=i%*4:t%=(t%*10)
  131. d%:u_%!p%=t%:
  132. c_(d_%,i%+51,
  133. H`(t%,
  134. J`%!p%=(K`%!p%*100)/t%:
  135. c_(d_%,i%+71,
  136. (J`%!p%))
  137. L`(i%,t%,d%,M`%):
  138. p%:p%=i%*4:A%=(((M`%
  139. 1024)*d%*100)
  140. t%)+0.4:u_%!p%=A%:
  141. c_(d_%,i%+51,
  142. (A%)):
  143. J`%!p%=A%*1000/K`%!p%:
  144. c_(d_%,i%+71,
  145. (J`%!p%))
  146. w_(M`%,N`%,i%):
  147. F`(i%):
  148. =$R_%=n_$:A%=1:G%=N`%:H%=M`%:T%=
  149. (O`%):
  150. G`(i%-51,T%,N`%):
  151. z_(M`%,N`%,i%):
  152. F`(i%):
  153. =$R_%=n_$:A%=2:G%=N`%:H%=M`%:T%=
  154. (O`%):
  155. G`(i%-51,T%,N`%):
  156. __(M`%,N`%,i%):
  157. F`(i%):
  158. (-10):
  159. N`%*4
  160. 4:P`%!I%=
  161. (M`%-1):
  162. :$R_%=n_$:A%=3:H%=N`%:T%=
  163. (O`%):
  164. G`(i%-51,T%,1):
  165. `_(M`%,N`%,i%):
  166. F`(i%):
  167. (-10):
  168. N`%*4
  169. 4:P`%!I%=
  170. (M`%-1):
  171. :$R_%=n_$:A%=4:H%=N`%:T%=
  172. (O`%):
  173. G`(i%-51,T%,1):
  174. B`(M`%,N`%,i%):
  175. F`(i%):
  176. m_(M`%)=
  177. 1000,"Not enough RAM for this test"
  178. K$R_%=n_$:A%=5:G%=M`%:H%=N`%:T%=
  179. (O`%):
  180. L`(i%-51,T%,N`%,M`%):I%=
  181. m_(0):
  182. C`(M`%,N`%,i%):
  183. F`(i%):
  184. m_(M`%)=
  185. 1000,"Not enough RAM for this test"
  186. 8,11,n_$,&FFD,,0,M`%:$R_%=n_$:A%=6:H%=N`%:T%=
  187. (O`%):
  188. L`(i%-51,T%,N`%,M`%):I%=
  189. m_(0):
  190. E`(M`%,N`%,i%):
  191. F`(i%):
  192. m_(M`%)=
  193. 1000,"Not enough RAM for this test"
  194. 8,11,n_$,&FFD,,0,M`%:$R_%=n_$:A%=7:G%=M`%:H%=N`%:T%=
  195. (O`%):
  196. L`(i%-51,T%,N`%,M`%*2):I%=
  197. m_(0):
  198. p%,R`%,S`%,T`%,U`%:R`%=0:T`%=0:S`%=0:U`%=0:
  199. +1:@%=6:p%=P`%:$p%=" Speed test carried out on '"+n_$:I%=p%:
  200. :I%+=1:
  201. ?I%=46:?I%=13:$I%="' on ":I%?5=0:
  202. 7,14,I%+5:p%=
  203. V`(p%):?p%=10:p%+=1
  204. w$p%=" Produced by program '"+A_$+"', v"+B_$+", "+C_$:p%=
  205. V`(p%):?p%=10:p%+=1:$p%=" "+
  206. k_(Z_%,4):
  207. $p%>" " p%=
  208. V`(p%)
  209. *$p%=" "+
  210. k_(Z_%,5):
  211. $p%>" " p%=
  212. V`(p%)
  213. I`$>"" ?p%=10:p%+=1:$p%=" Comparison with: "+I`$:p%=
  214. V`(p%)
  215. {?p%=10:p%+=1:$p%=" Byte access test, large file sise = ":
  216. v_(d_%,29)=
  217. $p%+=
  218. &100000)+" Mb"
  219. $p%+=
  220. 1024)+" Kb"
  221. V`(p%):$p%=" All times are in centi-seconds":p%=
  222. V`(p%):?p%=10:p%+=1:
  223. $p%:$p%+=
  224. 6," "):
  225. u_%!I%
  226. 0:$p%+="         Omitted"
  227. -1:$p%+="         Error!"
  228. :$p%+=
  229. H`(u_%!I%,10):
  230. $p%+=
  231. W`(J`%!I%,10)+"%":R`%+=J`%!I%:T`%+=1
  232. V`(p%):
  233. T`%>1 $p%="   Average random variation from baseline              "+
  234. T`%)+"%":p%=
  235. V`(p%)
  236. z?p%=10:p%+=1:$p%=" Block Load/Save, large file sise = ":
  237. v_(d_%,49)=
  238. $p%+=
  239. &100000)+" Mb"
  240. $p%+=
  241. 1024)+" Kb"
  242. V`(p%):$p%=" Data transfer speed shown in Kb/Sec":p%=
  243. V`(p%):?p%=10:p%+=1:
  244. I%=32
  245. $p%:$p%+=
  246. 6," "):
  247. u_%!I%
  248. 0:$p%+="         Omitted"
  249. -1:$p%+="         Error"
  250. :$p%+=
  251. W`(u_%!I%,8):
  252. $p%+=
  253. W`(J`%!I%,12)+"%":S`%+=J`%!I%:U`%+=1
  254. V`(p%):
  255. T`%>1 $p%="   Average block variation from baseline               "+
  256. U`%)+"%":p%=
  257. V`(p%)
  258. ?p%=10:p%+=1:
  259. T`%>1 $p%="   Overall average variation from baseline             "+
  260. ((R`%+S`%)
  261. (T`%+U`%))+"%":p%=
  262. V`(p%)
  263. #?p%=10:p%+=1:X`%=p%:Q`%=
  264. :@%=10
  265.  "   Read 50K sequential bytes          "
  266.  "   Write 50K sequential bytes         "
  267.  "   Read 500K sequential bytes         "
  268.  "   Write 500K sequential bytes        "
  269.  "   50 Kb file read 1,000 random bytes "
  270.  "   50 Kb file write 1,000 random bytes"
  271.  "   Large file read 1,000 random bytes "
  272.  "   Large file write 1,000 random bytes"
  273.  "   Save 50Kb file                     "
  274.  "   Load 50Kb file                     "
  275.  "   Save large block file              "
  276.  "   Load large block file              "
  277.  "   Save/load 50 Kb file               "
  278.  "   Save/load 512 Kb file              "
  279.  "   Save/load large block file         "
  280. V`(Y`%):
  281. ?Y`%>31:Y`%+=1:
  282. :?Y`%=10:=Y`%+1
  283. W`(n%,l%):=
  284. (n%))," ")+
  285. Z`:I%=
  286. m_(0):F_%=%110000110001:
  287. c_(d_%,26,""):
  288. c_(d_%,27,""):Q_%=0:Q`%=
  289. o_(w%,i%):!G_%=w%:
  290. 262347,,G_%:X%=G_%!4-G_%!20:Y%=G_%!16-G_%!24:G_%!4=i%:
  291. 262350,,G_%:!G_%=w%:G_%!4=5:G_%!8=G_%!8+X%:G_%!12=G_%!12+Y%:G_%!16=G_%!16+X%:G_%!20=G_%!20+Y%:G_%!24=0:G_%!28=0:G_%!32=&7FFFFFFF:G_%!36=&7FFFFFFF
  292. 262352,,G_%:
  293. J_(w%,i%):
  294. 262351,,G_%:G_%!20=G_%!12:G_%!24=G_%!16:G_%!28=!G_%:G_%!32=G_%!4:
  295. d_%:a`%=&FFD:b`$="HD_Temp":A`%=
  296. x_(d_%,46)*1024:D`%=
  297. x_(d_%,48)*1024:
  298. v_(d_%,29)=
  299. A`%=A`%*1024
  300. v_(d_%,49)=
  301. D`%=D`%*1024
  302. A`%>D`% c`%=A`%
  303. c`%=D`%
  304. d`%=c`%
  305. Q`:a`%=&FFF:d`%=X`%-P`%:b`$=
  306. k_(Z_%,6)
  307. :G_%!36=d`%:G_%!40=a`%:G_%!16=1:$(G_%+44)=b`$:!G_%=(
  308. (b`$)+49)
  309. 3:G_%!12=0:
  310. 262375,17,G_%,G_%!20,G_%!24:
  311. C0I%=G_%+44:
  312. ?I%>31:I%+=1:
  313. :?I%=13:
  314. a`%=&FFF
  315. 8,10,$(G_%+44),&FFF,,P`%,X`%:!G_%=Z_%:
  316. 262342,,G_%
  317. :n_$=$(G_%+44):
  318. 8,11,n_$,&FFD,,0,d`%:$R_%=n_$:e`$="":f`$="":I%=R_%:
  319. ?I%<>
  320. ":":e`$+=
  321. (?I%):I%+=1:
  322. :I%+=2:
  323. ?I%<>
  324. ".":f`$+=
  325. (?I%):I%+=1:
  326. c_(d_%,26,e`$):
  327. c_(d_%,27,f`$):
  328. c_(Z_%,6,f`$):Q_%=1:F_%=0
  329. 131107,"HDspeedLog$Dir",R_%,-1,0
  330. ,,I%:
  331. 1000,"HDSpeed Log Directory not found.":
  332. 8,10,"<HDSpeedLog$Dir>.logs."+
  333. k_(Z_%,6),&FFF,,P`%,X`%:!R_%=Z_%:
  334. 262342,,R_%:
  335.  10,10,1,1,100,100,10,10,25,10,10
  336. !R_%=d_%:R_%!8=1<<21:R_%!12=1<<21:
  337. I%=11
  338. 25:R_%!4=I%:
  339. 262349,,R_%:
  340. :R_%!4=29:
  341. 262349,,R_%:R_%!4=49:
  342. 262349,,R_%:R_%!8=0:R_%!4=30:
  343. 262349,,R_%:R_%!4=50:
  344. 262349,,R_%:
  345. I%=31
  346. c_(d_%,I%,a$):
  347. I%=39
  348. c_(d_%,I%,a$):
  349. c_(d_%,46,"8"):
  350. c_(d_%,48,"2"):
  351. c_(d_%,26,""):
  352. c_(d_%,27,""):
  353. c_(d_%,9,"Waiting"):
  354. I%=51
  355. c_(d_%,I%,""):
  356. c_(d_%,I%+20,""):
  357. $+" loading Setup",
  358. x?H%=
  359. (g`$+".Setup"):
  360. H%=0 I%=
  361. l_(1,"Setup file not found"):
  362. I%=11
  363. h`(d_%,I%):
  364. h`(d_%,29):
  365. h`(d_%,30):
  366. h`(d_%,49):
  367. h`(d_%,50):
  368. I%=31
  369. i`(d_%,I%):
  370. I%=39
  371. i`(d_%,I%):
  372. i`(d_%,46):
  373. i`(d_%,48):
  374. h`(w%,i%):!R_%=w%:R_%!4=i%:
  375. 262350,,R_%:
  376. J%=64
  377. 67:R_%?J%=
  378. :R_%!8=(R_%!24)
  379. (R_%!64):R_%!12=0:
  380. 262349,,R_%:
  381. i`(w%,i%):
  382. a$,c%:a$="":
  383. #H%:a$+=
  384. (c%):
  385. c%<32:
  386. c_(w%,i%,a$):
  387. (g`$+".Setup"):
  388. I%=11
  389. j`(d_%,I%):
  390. j`(d_%,29):
  391. j`(d_%,30):
  392. j`(d_%,49):
  393. j`(d_%,50):
  394. I%=31
  395. k`(d_%,I%):
  396. I%=39
  397. k`(d_%,I%):
  398. k`(d_%,46):
  399. k`(d_%,48):
  400. j`(w%,i%):!R_%=w%:R_%!4=i%:
  401. 262350,,R_%:
  402. J%=24
  403. #H%,R_%?J%:
  404. k`(w%,i%):!R_%=w%:R_%!4=i%:
  405. 262350,,R_%:J%=R_%!28:
  406. ?J%>31:
  407. #H%,?J%:J%+=1:
  408. #H%,13:
  409. H`(n%,l%):
  410. a$:a$=
  411. 10):n%=n%
  412. (l%-2)-
  413. (a$)," ")+a$:
  414. n%>0 a$=a$+"."+
  415. a$+="  "
  416. n%>0 a$=a$+"."+
  417. l`(w%,i%,v%):!R_%=w%:R_%!4=i%:
  418. 262350,,R_%:R_%!8=0:R_%!12=0:$(R_%!28)=
  419. (v%):
  420. 262349,,R_%:
  421. c_(w%,i%,s$):!R_%=w%:R_%!4=i%:
  422. 262350,,R_%:R_%!8=0:R_%!12=0:$(R_%!28)=s$:
  423. 262349,,R_%:
  424. k_(w%,i%):!R_%=w%:R_%!4=i%:
  425. 262350,,R_%:I%=(R_%!28):
  426. ?I%>31:I%+=1:
  427. :?I%=13:=$(R_%!28)
  428. x_(w%,i%):!R_%=w%:R_%!4=i%:
  429. 262350,,R_%:I%=(R_%!28):
  430. ?I%>31:I%+=1:
  431. :?I%=13:=
  432. $(R_%!28)
  433. a_(w%,i%):!R_%=w%:R_%!4=i%:
  434. 262350,,R_%:
  435. 262354,w%,i%,,,-1,
  436. $(R_%!28):
  437. v_(w%,i%):!R_%=w%:R_%!4=i%:
  438. 262350,,R_%:
  439. (R_%!24
  440. 1<<21):=
  441. e_(i%):
  442.  1,2,3,4,6,8,12,256,500,780,1560
  443. a$:i%-=1:
  444. i%<0:=a$
  445. g_(i%):
  446.  1,2,4,8,16,32,50,100,500,780,1560
  447. a$:i%-=1:
  448. i%<0:=a$
  449. m`(M`%):
  450. n`,o`,p`,q`,m%:o`=1:n`=2:q`=4:p`=&80:
  451. r`% M`%:m%=r`%:Y_%=
  452. s`(m%,"HDspeed",200):m%=
  453. t`("Info",0,u`%):m%=
  454. t`("Save log",0,0):m%=
  455. t`("Quit",p`,0):b_%=
  456. s`(m%,"Size",80):
  457. 9:m%=
  458. e_(I%),0,0):
  459. e_(10),p`,0):f_%=
  460. s`(m%,"Size",80):
  461. 9:m%=
  462. g_(I%),0,0):
  463. g_(10),p`,0):
  464. s` (a%,v`$,w`%):$a%=v`$:a%!12=&70207:a%!16=w`%:a%!20=40:a%!24=0:m%=a%+28:=a%
  465. t` (x`$,y`%,z`%):!m%=y`%:m%!4=z`%:m%!8=&7000001:$(m%+12)=x`$:=m%+24
  466. _` (``$,Aa%,``%):m%!0=Aa%:m%!4=0:m%!8=&7000101:m%!12=``%:m%!16=-1:m%!20=127:
  467. ``$<>"?" $``%=``$
  468. =m%+24
  469. Ba (Ca$,Da%):!G_%=Da%:G_%!4=-24:G_%!8=0:G_%!12=56:G_%!16=96:G_%!20=&2002:$(G_%+24)="!"+Ca$:
  470. 262338,,G_%
  471. I%:=I%
  472. E_ (Ea$,Fa%):*FX229,1
  473. 263874:!R_%=
  474. :$(R_%+4)="Error "+
  475. )+": "+Ea$++
  476. 262367,R_%,1,Ga%:
  477. 262365,Ha%,&4B534154:
  478. l_(Ia%,a$):!R_%=0:$(R_%+4)=a$+
  479. 262367,R_%,16
  480. Ia%,Ga%
  481. ,I%:=I%
  482. m_(M`%):
  483. 262380,Ja%+M`%,-1
  484. e%<(Ja%+M`%):=
  485. 8,16,"<Obey$Dir>.baseline",P`%,0
  486. ,,,,La%:
  487. p%=P`%
  488. P`%+La%:
  489. ?p%=10 ?p%=13
  490. :p%=P`%:p%=
  491. Ma(p%):I`$=$p%:I%=0:
  492. Na(p%):p%=
  493. Ma(p%):K`%!I%=(
  494. ($p%))*10:I%+=4:
  495. p%>(P`%+La%)
  496. I%>56:I`%=
  497. Ma(i%):
  498. ?i%<33:i%+=1:
  499. ?i%=124:
  500. ?i%>31:i%+=1:
  501. Ma(i%)
  502. Na(i%):
  503. ?i%>31:i%+=1:
  504. :=i%+1
  505. Oa (Pa%):
  506. ``% Pa%,Qa%&100:E%=``%+Pa%:
  507. Ra%<300 Sa$="RO-2"
  508. Sa$="Templates"
  509. (-3)Sa$="RO-2"
  510. 262361,,"<HDspeed$Dir>.Templates."+Sa$:
  511. 262363,,Ta%,``%,E%,-1,"info",0
  512. ,,R%:
  513. 262337,,Ta%
  514. 262363,,Ta%,R%,E%,-1,"main",0
  515. ,,R%:
  516. 262337,,Ta%
  517. 262363,,Ta%,R%,E%,-1,"finish",0
  518. ,,R%:
  519. 262337,,Ta%
  520. 262363,,Ta%,R%,E%,-1,"edit",0
  521. ,,R%:
  522. 262337,,Ta%
  523. 262363,,Ta%,R%,E%,Qa%,"banner",0
  524. ,,R%:
  525. 262337,,Ta%
  526. 262362:!G_%=u`%:G_%!4=1:
  527. 262350,,G_%:$(G_%!28)=A_$:!G_%=u`%:G_%!4=2:
  528. 262350,,G_%:$(G_%!28)=B_$
  529. J2!G_%=u`%:G_%!4=3:
  530. 262350,,G_%:$(G_%!28)=C_$:
  531. 262336,200,&4B534154,"HD Speed"
  532. Ra%,Ha%:Ja%=
  533. -&8000:Ta%=
  534. G_%&100,R_%&100,Ga% 16,P`%&1400:
  535. K`% 64,u_% 64,J`% 64:$Ga%="HD Speed":Wa%=10:
  536. $+" During initialisation",
  537. 35,"HDspeed$Dir",G_%,256,0,3
  538. ,,I%:G_%?I%=13:g`$=$G_%:
  539. m_(&2000)=
  540. 0,"Not enough memory to run HD Speed"
  541. Oa(&A00):
  542. m`(800):i_%=
  543. Ba("hdspeed",-1):
  544. 8,13,g`$+".Setup"
  545. Z`:I`%=
  546. :I`$="":
  547. 8,13,g`$+".Baseline"
  548. l_(1,"Baseline file not found, unable to display comparitive table")
  549. O`%&600:
  550. 2:P%=O`%:[OPT Ya:stmfd r13!,{r14}:adr r8,Za:mov r0,r0,lsl#2:ldr pc,[r8,r0]
  551. jG.Za equd aa:equd w_:equd z_:equd __:equd `_:equd B`:equd C`:equd E`
  552. sv.ba equd R_%:.ca equd 0:.da equd P`%:.Ta equd Ta%:.ea equd&FFD:.fa equd Va%:.ga equd u`%:.Wa equd Wa%:.ha equd Ga%
  553. .E`:swi&42:str r0,ca:ldr r1,ba:.ia subs r7,r7,#1:bmi ja:mov r0,#10:ldr r2,ea:ldr r4,Ta:add r5,r6,r4:swi 8:mov r0,#16:ldr r2,Ta:mov r3,#0:swi 8:bal ia
  554. g.C`:swi&42:str r0,ca:ldr r1,ba:.ka subs r7,r7,#1:bmi ja:mov r0,#16:ldr r2,Ta:mov r3,#0:swi 8:bal ka
  555. ,.la equs "<obey$dir>.h_reg":equb 0:align
  556. t.B`:swi&42:str r0,ca:mov r0,#10:ldr r1,ba:ldr r2,ea:ldr r4,Ta:add r5,r6,r4:.ma subs r7,r7,#1:bmi ja:swi 8:bal ma
  557. k.`_:bl na:ldr r5,da:mov r0,#1:.oa subs r7,r7,#1:bmi pa:ldr r2,ba:mov r3,#1:ldr r4,[r5],#4:swi 12:bal oa
  558. D.qa swi&42:add r3,r0,#600:.ra swi&42:cmp r0,r3:blt ra:mov pc,r14
  559. .aa stmfd r13!,{r14}:adr r1,la:mov r0,#13:swi 8:cmp r0,#1:bne sa:cmp r4,#&20:bne ta:mov r0,#255:ldr r2,Ta:mov r3,#0:swi 8:ldr r6,Wa:ldr r4,Ta:ldr r3,[r4],#4:mov r2,#0:.ua:ldrb r0,[r4,r2]:mvn r0,r0:and r0,r0,#&FF:add r0,r0,r6
  560. ]sub r3,r3,r0:sub r0,r0,r2:strb r0,[r4,r2]:add r2,r2,#1:cmp r2,#20:blt ua:cmp r3,#0:beq va
  561. x.ta:ldr r0,ha:swi&400Ef:adr r1,wa:.xa ldrb r0,[r1],#1:cmp r0,#0:swine 0:bne xa:align:bl qa:mov r0,#1:ldmfd r13!,{pc}
  562. .wa:equd&20200A0A:equd&20656854:equd&69676552:equd&61727473:equd&6e6f6974:equd&6c694620:equd&61682065:equd&65622073:equd&74206e65:equd&65706d61:equd&20646572:equd&68746977:equd&0A0A070D
  563. }equd&2020200A:equd&20202020:equd&20202020:equd&676f7250:equd&206d6172:equd&6d726574:equd&74616e69:equd&0A676e69:equd&0A0D
  564. .sa:swi 256+7:ldr r0,fa:ldr r1,Ta:add r1,r1,#48:str r0,[r1]:swi&400Cb:swi&400c5:mov r4,#10:.ya:mov r0,#0:ldr r1,Ta:add r1,r1,#48:swi&400c7:subs r4,r4,#1:bpl ya:bl qa:ldr r1,Ta:add r1,r1,#48:ldr r0,fa:str r0,[r1]:swi&400c6
  565. mov r0,#0:ldmfd r13!,{pc}
  566. .va:ldr r1,Ta:add r1,r1,#48:ldr r0,ga:str r0,[r1]:mov r0,#5:str r0,[r1,#4]:swi&400ce:ldr r3,[r1,#28]:ldr r2,Ta:add r2,r2,#4:.xa ldrb r0,[r2],#1:strb r0,[r3],#1:cmp r0,#32:bge xa:mov r0,#0:ldmfd r13!,{pc}
  567. z.__:bl na:ldr r5,da:mov r0,#3:.oa subs r7,r7,#1:bmi pa:ldr r2,ba:mov r3,#1:ldr r4,[r5],#4:swi 12:bal oa:]:
  568. Ya>1:=
  569. (Y[OPT Ya:.na:mov r0,#&CC:ldr r1,ba:swi "OS_Find":mov r1,r0:swi&42:str r0,ca:mov pc,r14
  570. 1V.pa:swi&42:mov r6,r0:mov r0,#0:swi"OS_Find":ldr r1,ca:sub r0,r6,r1:ldmfd r13!,{pc}
  571. :5.ja:swi&42:ldr r6,ca:sub r0,r0,r6:ldmfd r13!,{pc}
  572. @{.z_:bl na:.za subs r6,r6,#1:bmi pa:mov r0,#1:mov r2,#0:swi 9:sub r4,r7,#1:._a swi "OS_BPut":subs r4,r4,#1:bpl _a:bal za
  573. .w_:bl na:.`a subs r6,r6,#1:bmi pa:mov r0,#1:mov r2,#0:swi "OS_Args":sub r4,r7,#1:.Ab swi "OS_BGet":subs r4,r4,#1:bpl Ab:bal `a
  574.